1. Field of the Invention
The present invention relates to a method for generating error-correction data to be used in correcting an error made in data to be protected.
2. Description of the Related Art
A communication protocol such as a Transport Protocol for Real-Time Applications (RTP) that realizes real-time communication has come into full use along with the popularization of video transmission via a communication network, e.g., the Internet. The RTP is designed to be implemented on a User Datagram Protocol (UDP) having a high-speed and lightweight transmission characteristic, and to consecutively transmit large-volume data such as moving images and voice.
There are methods for increasing robustness against error in communication data transmitted using the above-described communication protocol, such as retransmission control and forward error correction (FEC). In particular, in the FEC method, redundant data to be used in correcting the error in the communication data is transmitted along with the communication data from the transmitting side. The error in the communication data is then corrected on the receiving side.
There are various FEC methods, and a method generally referred to as cross FEC (or 2D-FEC) that employs exclusive OR is widely known as a method whose processing load is relatively small (e.g., refer to Pro-MPEG Code of Practice #3 release 2, Pro-MPEG Forum, July, 2004).
In the cross FEC method, packets to be transmitted are arranged in a matrix of D rows and L columns. The exclusive OR is calculated in each of the column direction and the row direction, and the resulting data becomes the redundant data, which are then packetized and transmitted. As a result, if a packet loss is occurred in a packet group including the redundant data in the column direction or the row direction, the packet can be restored by applying the exclusive OR calculation.
FIG. 10 illustrates a conventional example of a typical cross FEC application. In the example, the packets to be transmitted are arranged in a matrix of 7 rows and 5 columns, and 12 redundant packets are generated. Each rectangle indicates a transmission packet, and data packets 1, 2, 3, 4, and 5 generate an FEC packet f1 in the row direction, and data packets 1, 6, 11, 16, 21, 26, and 31 generate an FEC packet F1 in the column direction. In other words, the FEC packets F1, F2, F3, F4, and F5 are FEC packets (redundant packets) in the column direction, and the FEC packets f1, f2, f3, f4, f5, f6, and f7 are FEC packets (redundant packets) in the row direction.
The cross FEC method transmits the FEC packets in the row direction and in the column direction along with the data packets. Further, for example, if an error occurs in one of the data packets in a row, the error can be corrected using the data packet in which an error has not occurred in the row and the FEC packet in the row direction generated by the data packets in the row.
The error can be similarly corrected using the redundant packet in the column direction. For example, if the data packet 7 is lost, the data packet 7 can be restored using the FEC packet F2 and the data packet group of the second column, or the FEC packet f2 and the data packet group of the second row.
Further, the FEC can be implemented by applying only the redundant packets in the column direction or the redundant packets in the row direction. Such an FEC is referred to as 1D-FEC instead of 2D-FEC.
However, the error may not be corrected using the redundant data depending on a pattern of error occurrence.
For example, if the errors occur in the data packets 7, 9, 12, and 14 illustrated in FIG. 10, the data packets 7 and 9 cannot be corrected even when the exclusive OR is calculated using the redundant packet f2. The data packets 7 and 12 similarly cannot be corrected even when the exclusive OR operation is performed using the redundant packet F2, and the data packet 14 cannot be corrected.
Further, if the errors occur in the data packets 1, 2, 3, 4, 5, 6, 7, and 8, the errors in the data packets 4 and 5 can be corrected using the redundant packets F4 and F5 respectively. However, the errors in the data packets 1, 2, and 3 and the data packets 6, 7, and 8 cannot be corrected using the redundant packets.
If the above-described periodical errors or consecutive errors occur in a communication path, the errors may not be corrected using the redundant data. Further, in the above-described examples, the redundant packets are generated by a method using the exclusive OR. However, if there is a number of packet losses, which exceed an upper limit of a restorable number of packets, the errors cannot be corrected even when employing a method having high redundancy, such as Reed-Solomon coding.